package com.example.file_management.mapper.user;

import com.example.file_management.pojo.user.Role;
import org.apache.ibatis.annotations.*;
import java.util.List;

@Mapper
public interface RoleMapper {

    // 查询所有角色
    @Select("SELECT * FROM role_table")
    List<Role> findAllRoles();

    // 根据ID查询角色
    @Select("SELECT * FROM role_table WHERE role_id = #{roleId}")
    Role findRoleById(@Param("roleId") Long roleId);

    // 检查角色ID是否存在
    @Select("SELECT COUNT(*) FROM role_table WHERE role_id = #{roleId}")
    boolean isRoleExists(@Param("roleId") Long roleId);

    // 插入角色，允许角色名重复
    @Insert("INSERT INTO role_table (role_name, created_at) VALUES (#{roleName}, #{createdAt})")
    @Options(useGeneratedKeys = true, keyProperty = "roleId", keyColumn = "role_id")
    int insertRole(Role role);

    // 更新角色信息
    @Update("UPDATE role_table SET role_name = #{roleName} WHERE role_id = #{roleId}")
    int updateRole(Role role);

    // 删除角色
    @Delete("DELETE FROM role_table WHERE role_id = #{roleId}")
    int deleteRole(@Param("roleId") Long roleId);

    // 根据用户名查询该用户的 role_id
    @Select("SELECT role_id FROM auth WHERE username = #{username}")
    Integer getRoleIdByUsername(@Param("username") String username);

    // 获取最近插入的角色 ID
    @Select("SELECT LAST_INSERT_ID()")
    Long getLastInsertId();

    // 检查角色名是否存在
    @Select("SELECT COUNT(*) FROM role_table WHERE role_name = #{roleName}")
    boolean isRoleNameExists(@Param("roleName") String roleName);
}
